package com.lingxu.module.process.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lingxu.module.process.CheckVariable;
import com.lingxu.module.process.controller.vo.ModelVO;
import com.lingxu.module.process.controller.vo.TModelActivityVO;
import com.lingxu.module.process.mapper.ModelMapper;
import com.lingxu.module.process.mapper.TModelActivityMapper;
import com.lingxu.module.process.model.TModelActivity;
import com.lingxu.module.process.service.ITModelActivityService;


import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.baomidou.mybatisplus.core.metadata.IPage;


import lombok.extern.slf4j.Slf4j;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 模型审批默认节点信息 服务实现类
 *
 * @author admin
 * @since 2025-07-30
 */
@Slf4j
@Service
public class TModelActivityServiceImpl extends ServiceImpl<TModelActivityMapper, TModelActivity>  implements ITModelActivityService {

    @Resource
    private TModelActivityMapper tModelActivityMapper;

    @Resource
    private ModelMapper modelMapper;

    @Transactional(readOnly = true)
    @Override
    public IPage<TModelActivityVO> queryPageList(TModelActivityVO query) {

        Page<TModelActivityVO> page = new Page<TModelActivityVO>(query.getPageNo(), query.getPageSize());
        IPage<TModelActivityVO> tModelActivityVOIPage = tModelActivityMapper.pageList(page, query);
        if(CheckVariable.isEmpty(tModelActivityVOIPage.getRecords())){
             int size = tModelActivityVOIPage.getRecords().size();
             int length = size-1;
            for (int i = 0; i < size; i++) {
                 TModelActivityVO v = tModelActivityVOIPage.getRecords().get(i);
                 if(i==length){// 表示下面没有数据了
                     if(v.getType()==1){// 转办
                         if (v.getFqrId().equals(query.getCreator())) {
                             v.setStatusName("已发起转办,待对方处理");
                         }
                         if(v.getToUserId().equals(query.getCreator())){
                             v.setStatusName("待办理");
                         }
                     }
                     if(v.getType()==2){
                         if(v.getFqrId().equals(query.getCreator())){
                             if(v.getStatus()==1){
                                 v.setStatusName("已审批");
                             }
                             if(v.getStatus()==2){
                                 v.setStatusName("审批拒绝");
                             }
                             if(v.getStatus()==3){
                                 v.setStatusName("已发起审批,待对方处理");
                             }
                         }
                         if(v.getToUserId().equals(query.getCreator())){
                             if(v.getStatus()==1){
                                 v.setStatusName("已审批");
                             }
                             if(v.getStatus()==2){
                                 v.setStatusName("审批拒绝");
                             }
                             if(v.getStatus()==3){
                                 v.setStatusName("待审核");
                             }
                         }
                     }

                     if(v.getType()==3){// 自主办理
                         if (v.getFqrId().equals(query.getCreator())) {
                             v.setStatusName("已发起,待对方处理");
                         }
                         if(v.getToUserId().equals(query.getCreator())){
                             v.setStatusName("待处置");
                         }
                     }
                 }

                if(i<length){// 表示下面还有审批 当前的都完成了
                    if(v.getType()==1){// 转办
                        v.setStatusName("已办理");
                    }
                    if(v.getType()==2){
                        if(v.getFqrId().equals(query.getCreator())){
                            if(v.getStatus()==1){
                                v.setStatusName("已审批");
                            }
                            if(v.getStatus()==2){
                                v.setStatusName("审批拒绝");
                            }
                            if(v.getStatus()==3){
                                v.setStatusName("已发起审批,待对方处理");
                            }
                        }
                        if(v.getToUserId().equals(query.getCreator())){
                            if(v.getStatus()==1){
                                v.setStatusName("已审批");
                            }
                            if(v.getStatus()==2){
                                v.setStatusName("审批拒绝");
                            }
                            if(v.getStatus()==3){
                                v.setStatusName("待审核");
                            }
                        }
                    }
                    if(v.getType()==3){// 自主办理
                        v.setStatusName("已办理");
                    }
                }
            }


        }
        return tModelActivityVOIPage;
    }

    @Transactional(readOnly = true)
    @Override
    public IPage<ModelVO> modelPageList(ModelVO query) {
        Page<ModelVO> page = new Page<ModelVO>(query.getPageNo(), query.getPageSize());
        return tModelActivityMapper.modelPageList(page,query);
    }


    @Transactional(readOnly = true)
    @Override
    public List<TModelActivityVO> list(TModelActivityVO query) {
        return tModelActivityMapper.selectTModelActivityList(query);
    }

    @Transactional(rollbackFor = Exception.class)
    @Override
    public void delete(Set<String> ids) {
        if (CollectionUtils.isNotEmpty(ids)) {
            tModelActivityMapper.deleteBatchIds(ids);
        }
    }

    @Override
    public IPage<Map<String, Object>> modelIssuePageList(ModelVO query) {
        Page<ModelVO> page = new Page<ModelVO>(query.getPageNo(), query.getPageSize());

        return tModelActivityMapper.modelIssuePageList(page,query);
    }

    @Override
    public List<TModelActivityVO> getAll(TModelActivityVO query) {

        List<TModelActivityVO> tModelActivityVOIPage = tModelActivityMapper.getAll(query);
        if(!CheckVariable.isEmpty(tModelActivityVOIPage)){
            int size = tModelActivityVOIPage.size();
            int length = size-1;
            for (int i = 0; i < size; i++) {
                TModelActivityVO v = tModelActivityVOIPage.get(i);
                if(v.getType()==1){
                    if (v.getFqrId().equals(query.getCreator())) {
                        //转办
                        if(CheckVariable.isEmpty(v.getCzjg())){
                            v.setStatusName("已发起转办,待对方处理");
                        }else{
                            if(v.getCzjg()==1){
                                //转办
                                v.setStatusName("已办理");
                            }
                            if(v.getCzjg()==3){
                                //自办
                                v.setStatusName("对方已承办");
                            }
                        }

                    }
                    if(v.getToUserId().equals(query.getCreator())){
                        //转办
                        if(CheckVariable.isEmpty(v.getCzjg())){
                            v.setStatusName("待处理");
                        }else{
                            if(v.getCzjg()==1){
                                //转办
                                v.setStatusName("已办理");
                            }
                            if(v.getCzjg()==3){
                                //自办
                                v.setStatusName("已承办");
                            }
                        }

                    }
                }
                if(v.getType()==2){
                    if (v.getFqrId().equals(query.getCreator())) {
                        //审核
                        if(v.getStatus()==1){
                            v.setStatusName("已审批，通过");
                        }
                        if(v.getStatus()==2){
                            //审核
                            v.setStatusName("审批拒绝");
                        }
                        if(v.getStatus()==3){
                            //审核
                            v.setStatusName("已办理,待领导审核");
                        }
                    }
                    if(v.getToUserId().equals(query.getCreator())){
                        //审核
                        if(v.getStatus()==1){
                            v.setStatusName("已审批，通过");
                        }
                        if(v.getStatus()==2){
                            //审核
                            v.setStatusName("审批拒绝");
                        }
                        if(v.getStatus()==3){
                            //审核
                            v.setStatusName("待审核");
                        }
                    }
                }


//                if(i==length){// 表示下面没有数据了
//                    if(v.getType()==1){// 转办
//                        if (v.getFqrId().equals(query.getCreator())) {
//                            v.setStatusName("已发起转办,待对方处理");
//                        }
//                        if(v.getToUserId().equals(query.getCreator())){
//                            v.setStatusName("待办理");
//                        }
//                        if(v.getCzjg()==3){// 自主办理
//                            if (v.getFqrId().equals(query.getCreator())) {
//                                v.setStatusName("已发起,待对方处理");
//                            }
//                            if(v.getToUserId().equals(query.getCreator())){
//                                v.setStatusName("待处置");
//                            }
//                        }
//                    }
//                    if(v.getType()==2){
//                        if(v.getFqrId().equals(query.getCreator())){
//                            if(v.getStatus()==1){
//                                v.setStatusName("已审批");
//                            }
//                            if(v.getStatus()==2){
//                                v.setStatusName("审批拒绝");
//                            }
//                            if(v.getStatus()==3){
//                                v.setStatusName("已发起审批,待对方处理");
//                            }
//                        }
//                        if(v.getToUserId().equals(query.getCreator())){
//                            if(v.getStatus()==1){
//                                v.setStatusName("已审批");
//                            }
//                            if(v.getStatus()==2){
//                                v.setStatusName("审批拒绝");
//                            }
//                            if(v.getStatus()==3){
//                                v.setStatusName("待审核");
//                            }
//                        }
//                    }
//
//
//                }
//
//                if(i<length){// 表示下面还有审批 当前的都完成了
//                    if(v.getType()==1){// 转办
//                        v.setStatusName("已办理");
//                    }
//                    if(v.getType()==2){
//                        if(v.getFqrId().equals(query.getCreator())){
//                            if(v.getStatus()==1){
//                                v.setStatusName("已审批");
//                            }
//                            if(v.getStatus()==2){
//                                v.setStatusName("审批拒绝");
//                            }
//                            if(v.getStatus()==3){
//                                v.setStatusName("已发起审批,待对方处理");
//                            }
//                        }
//                        if(v.getToUserId().equals(query.getCreator())){
//                            if(v.getStatus()==1){
//                                v.setStatusName("已审批");
//                            }
//                            if(v.getStatus()==2){
//                                v.setStatusName("审批拒绝");
//                            }
//                            if(v.getStatus()==3){
//                                v.setStatusName("待审核");
//                            }
//                        }
//                    }
//                }
            }


        }
        return tModelActivityVOIPage;
    }

    @Override
    public List<ModelVO> getDataForYJ(ModelVO modelVO) {
        return tModelActivityMapper.getDataForYJ(modelVO);
    }


}
